

(v04 12-18-22)
TO LOAD THIS PICO-8 CART, in immediate mode, type:
load #newcompress
Hello.
I have need of a data compressor for the 2023 project I'm working on now so I wrote one. And it's better than a 6-bit or 7-bit because once again, this is an 8-bit compressor.
Now this is different from the picture compressor I wrote which you can find HERE:
https://www.lexaloffle.com/bbs/?tid=45335
That compressor is looking for Pico-8 pixels specifically.
No, THIS compressor is looking for raw data. While I am demonstrating it with pictures it is in fact geared for byte data, maps, PCM sound, and what have you.





Hello.
I would like to suggest, @zep, please, that you add the cursor's X-location to the editor.
There is some screen real estate not being used HERE:

This would help me as I'm now working on some data tables of different lengths across.
Additionally a way of getting the true length of a string before converting it to untypables.
For instance:
a="\48\0" ?#a ?truelen(a) |
2
5
Is there room for a 3rd request ?
The other is more technical. I'd like this:
\07
to convert to chr(0).."7" instead of chr(7).
For instance if you want chr(0) and chr(7) it would be: \0\7
or \0⁷
or chr(7) by itself would be, \7
or ⁷
\00543
would convert to chr(0).."0543" instead of "63"
Quite simply do not allow a prefix zero to be included in a numerical argument "\" for P8SCII or lower ASCII commands. A "\0" always denotes chr(0). This is only true for CHR(0), no other, "\111" for instance does not give chr(1)..chr(1)..chr(1), it gives "O" (letter oh).
Naturally normal \
without a prefix of zero is fine.
\48
= "0"
\64
= "@"
\13
= chr(13) or \r
etc.
But once again something like, \013
would not return a CR but chr(0).."13"
It seems to me that some of the latest versions you have of Pico-8 are in fact breaking existing previously working Pico-8 carts.
May I suggest that the cart be read, especially the 2nd line down:
pico-8 cartridge // http://www.pico-8.com version 37 |
Which denotes the version and online and in Splore at least, run THAT particular version of Pico-8 so all previously existing carts will run correctly ?
Then we can sift through the newest versions of Pico-8, carefully, and deal with whatever problems they are causing - without affecting previously running perfect code.
Also to add a new command to Pico-8, ver
which will state the version # you are currently running. The latest if you are running the EXE, or a different version entirely if you load it from # or splore or it is online.
Also to bring back info()
so it can be used in code. Currently it is ignored yet in previous versions it works properly. I used that in my Mildew Manor game to show system specs at the start.





Hello.
This is what I hope is a pretty simple request, @zep.
Currently if you click PLAY on any Pico-8 project included in a BBS post, it is up to the user, me, to manually scroll the screen so it all fits as it can definitely be just half-on the screen.
Could you please automatically scroll and center the Pico-8 window when you click the PLAY button so we don't have to ?
Also to have an option to sleep or not. That is if the cursor ever leaves the Pico-8 frame while being run from a BBS, it could go silent and freeze up or run as normal, through user configuration.
Thanks !
Hello.
As I'm experimenting with 8-bit compression, I came across an anomaly that I feel deserves some attention.
Try this code:
cls() a=chr(6) b="⁶" ?ord(a) ?ord(b) |
I created the ⁶ by typing in immediate mode, printh(chr(6),"@clip")
and then in the source-code pressing CTRL+V.
My question is how can BOTH of these be the same character and - is this an error of some kind ?
Because if you type out in immediate mode, print(chr(6))
you won't get that symbol back. You can only get that symbol if you use printh()
Because if for some reason this is correct, it means that you are NOT saving a single byte per character in your source-code, that you are in fact using an extended unknown set to create that special character of 6, yes ?
The bug is this. You cannot get a visual for printing a character < ASCII of 16, however you CAN if you transfer it solely to the clipboard and then use CTRL+V. There is still no way to print it. It should appear either way you access it for output or at least give you an option of doing so with an obscure poke() or direct extcmd().




(v00 12-10-22)
TO LOAD THIS PICO-8 CART, in immediate mode, type:
load #slowdown
In this demo use the LEFT and RIGHT arrow keys to control actual runtime speed of the cart. Examine the code to see how it is done.
Hello.
As you know conventional code allows you to run your cart in 30fps or 60fps.
However making use of the seldom known command, _set_fps()
you can set any of these values or an arbitrary one.
Is there a way of setting FPS <30 inside a cart that does make use of _update() or _update60() ?




Hello there.
No, that's not Total Recall. Tabber Recall.
As you may be aware you can press the UP arrow key when you are in immediate mode and it will recall the last commands you have typed.
However the feature I would like to request is engaged when you press the TAB key and depending upon what you've already typed, it will match.
Example. Let's say you've typed all this in immediate mode:
pset(49,49,3) apple="sauce" sandy="beach" save exact-12-10-22 bread="ginger" |
Now if you wanted to save your code again you could press the UP arrow key twice and press ENTER. However suppose you have entered 100 or more commands since then. Well you'd be pressing that UP arrow key quite a few times to find it.
What I suggest is this.
Much like being able to press TAB when you select, load {filename}
instead of showing you the files it shows you the commands. So if you typed out s
in immediate mode and the TAB key you would get:

Hello.
No this is clearly a bug inconvenience.
If you make use of RUN(string)
where you can recall it with STAT(6) later, If you press CTRL+R anywhere during the cart, or select Reset Cart
from the system menu, or even have just RUN()
in your code, it will not reset STAT(6) fouling up the results you were using to look for it.
It would be helpful if a new EXTCMD() was chosen that could be used to reset the argument specifically for the RUN() command WITHOUT having to RUN().


(v03 12-08-22)
TO LOAD THIS PICO-8 CART, in immediate mode, type:
load #xmaspp
VVHAT'S NEW ??
- 12-08-22 Thanks to @kimiyoribaka for "quick new game" suggestion. In the system menu.
- 12-08-22 Thanks to @extar for finding a bug in the name entry. Corrected.
- 12-08-22 Show high-scores after entering your name. Game continues from there.
@ScrubSandwich: Greeting humanoids, this is the first game release from the group of SORCERY. We hope that you enjoy our humble release filled with Christmas cheer and winter shenanigans.
12-07-22: Hello ! I thought I would update this joint project Sorcery and myself worked on years ago with new Pico-8 v0.2.5c abilities.






(v01 12-05-22)
TO LOAD THIS PICO-8 CART, in immediate mode, type:
load #p8mtoo
This cart is designed for offline use and will let you select any area from your spritesheet and draw it in any other code or even a different cart - without using the spritesheet.
Use the arrow keys to navigate.
Try selecting any of the color rectangles to test the system.
Hold down the CTRL key to jump in a grid of 8x8.
Hold down the SHIFT key to start selecting an area. The area is inclusive so the cursor must touch the area borders you want to select.
Hold down BOTH CTRL and SHIFT to select in fields of 8x8 where the box is 8*size-1
Hello.
I was writing some code and came across this curiosity.
Now we all know that if you place a comparison inside parentheses that you neither need the THEN or END command.
if (a==b) print("match") |
However I am doing a comparison inside the comparison, nested, and it does not seem to work.
if (x<0) y=y-1 x=5 if (y==12) y=16 |
Any ideas on how to get this to work, guys, without using THEN or END, or is this a BUG ?




I am running into a curious situation, @zep, regarding Pico-8 when it comes to lowercase letters.
For instance, in new code type this:

To type the lowercase letters you will need to press CTRL+P first, then type the letters, then press CTRL+P afterwards to return to normal uppercase letter mode.
Now highlight the code. The easiest way to do this is to triple-click it. Press CTRL+C to copy it.
Now paste it in any text editor like Notepad or even a message in here with CTRL+V. You will get the following:
a="abcdefg 𝘢𝘣𝘤𝘥𝘦𝘧𝘨"
Why is the text italicized ?
If you run the code and then use printh(a,"@clip")
and then CTRL+V in the same text editor, you get this:
abcdefg ABCDEFG
Which is think is more correct. What do you guys think is going on here and are you getting the same results I do ?







Hello, @zep.

You have seen that loading pause that appears in the top-left-hand corner of the screen every time you use CSTORE(), RELOAD(), or EXPORT (PNG) in your code. This is voluntary. I'm certain you chose it for a good reason. Sometimes I can't see the reasons you do. Yet it's not from not trying to.
I feel, however, the delay is artificial and unnecessary. You can prove this by IMPORTING a PNG image and it loads immediately with no delay at all, inside your code or out.
So how about this ? You have the pause when you use it the first time running if you must. Then you can continue to have the pause each time for every time you change the filename. However, if it were used in such a way that only =1= filename were used, for instance, to make it a random access file to save your current work, then it would be most helpful to me, perhaps to others, to remove that pause.
So your work may be saved automatically every minute or so minus the icon and timeout animation.
(v00 11-23-22)
TO LOAD THIS PICO-8 CART, in immediate mode, type:
load #travwomoving2
Run this cart. Now before you view the source-code, THINK of what it might be. Do you think it's using an array to keep track of the stars ? OK. Perhaps the acceleration speed is being recorded from another floating point array. Fine. How about the color of each star to make sure they stay the same for each row in the display. That would be the regular way to do it, yes.
So that's 3-arrays we need to keep track of, right ? Let's list them out:
- The Star's X-position.
- The Star's acceleration speed.
- and the Star's constant color.







(v02 11-21-22)
TO LOAD THIS PICO-8 CART, in immediate mode, type:
load #beyond32767
Use the joystick to navigate this cart.
Press UP to increase the score with a random value of 1 to 1000.
Press DOWN to decrease the score with a random value of 1 to 1000.
Press LEFT to reset the score back to zero (0).
Press RIGHT to set the score to exactly 32767. The standard upper limit.
Be aware that the score is saved every single frame. This is not a slow process and occurs almost immediately. So when you reboot the cart or come back to it later, it will contain the last value you had in it. Please see the sourcecode for more notes and details.
While HELP is indeed informative it is missing some commands that are used in Pico-8. I'm not going to mark these as errors, @zep, as they may just be overlooked. This includes:
goto
count
setmetatable
getmetatable
rawset
rawget
rawequal
rawlen
assert
. Likely there are others.
While not required for help it would be nice if there was HELP for these single-key shortcuts:
?
#
@
%
$
\
If you ask for help on do
it does not give a code example which is odd as all the other commands do.
Further the HELP could also appear if you are one-character to the right of the command.
pset(4,8)
Where the cursor is on the (
Pressing CTRL+U does not give help on it.
Should also work if the cursor is directly on the )
which is linked to that same command.


(v00 11-17-22)
TO LOAD THIS PICO-8 CART, in immediate mode, type:
load #pickapoint
^^ This version is for examining and learning from. The way I will mostly code from now on.
TO LOAD THIS PICO-8 CART, in immediate mode, type:
load #pickapoint_shr
^^ This version is for use in your own code. It's a lot smaller in size. If you use CLIPBOARD to copy and paste, be sure to press CTRL+P prior to pressing CTRL+V to paste and after CTRL+V as well.
Hello.
@zep, could you please add a hotkey like CTRL+W to turn on and off word-wrap for code ?
For instance we have this one line which extends beyond the screen:

However, if you press CTRL+W then it would wrap around the screen like so, showing the ∙
at the beginning to let you know it is a wrapped line and you can navigate the area and easily edit all 4-lines. When done, press CTRL+W again to return it back to a full and single line that scrolls off the edge of the screen.

Ignore the color changes above, this is just me putting that character in front of the code to show what it would look like.
Now I know this isn't perfect, I mean Pico-8 only has 32-characters across using a 3x5 pixeled font. Yet I think this will help some of us work on large lines.
It could also be that you do not see this word-wrap except for lines that do exceed 32-characters AND the cursor must be on that line in order to access it.


(v02 11-16-22)
TO LOAD THIS PICO-8 CART, in immediate mode, type:
load #reconfig_arrow_keys
VVhat's New ?
- 11-16-22: Changed the default keystrokes to normal arrow keys. Should work now.
- 11-16-22: Got a nice doodle for the covert art.
Use the arrow keys to navigate and press 🅾️ to reconfigure the arrow keys to anything you like.
Hello.
One thing I noticed about new Pico-8 is that KeyConfig()
no longer works inside code. Now this is not something recent. I think it was years ago that it =DID= work, however.
So as coders we must find a workaround. Here now is one I have written to examine full of many remarks and comments explaining what is going on. Not only does it let you choose SHIFT and other non-standard keys for your arrows, it also records them so even if you shut it down and bring it back up later it remembers what you recorded.



Hello.
I'm not sure if this was asked before, @zep, but it sure would help me to have CATEGORIES or TYPES for games.
I can certainly rattle off a few from my collection:
Adventure, 3D, topview, sideview, use joystick, keyboard, mouse Battle Cards + digital card collector. Battlers (map scrolls, fight many opponents). Balancing, Rotating, and Gravity. Board Games, Chess, Checkers, Gomuku, Nim, Sorry, Monopoly, Candyland, dice. Bowling + ball hitting pins. Casino, either cards, dice, roulette, lotto, etc. Catch + Release + Avoid. Celeste Clone (based upon the original). Classic Arcade, Pac-Man, Space-Invaders, etc. Click Puzzles + Mysteries, using items or not. Clickers, Reaction, Cookie. Coloring Books + Stickers. Comics. Creative, Painting and writing. Dance + Rhythm + Patterns + Recall. Dating Sim. Virtual dates. Demos, team animations + music showcasing programming, art, and musical talent. Dressup, put the clothes on the bunny. ZEP wrote one of these. Educational, Edutainment. Exergame, fitness, Dance Aerobics. Fighters, usually (1 on 1), fixed background graphics. Slug-fest. Gambling, 5-Card Stud, Poker, Blackjack. Horror, jumpscare games. Stuff like that. Just Graphics. Showing off your artistic talent. Just Music. Showing off your musical prowess. Simulation, Flight, etc. Stealth. Foreign (game is difficult albeit impossible to play for English speaking without translation). Gacha. Gets its own category. Game Shows. Golf. (yes I give this a category to itself as I like it so much). :) Hidden Object Games. Idle games. (These almost play themselves). Jigsaw + Reveal-The-Picture. Kids + Educational. Life simulation. Logical + Brain Games. Match-3 + Tile-Matching Games. Mazes + Snakes. Monster tamer + Battles (Pokemon). Multigames (where there are small timed games, like 5 seconds each). Music Loops. Music Videos. NSFW Games + Videos (may not apply to Lexaloffle). Party Games, 2 or more players expected. Photography, virtual camera + film. Pick-Your-Own-Path (like the books). Pinball + Breakout. Platformers, 3D, Topview, or Sideview. Programming + Coding. The Fantasy Console within a Fantasy Console. Puzzles, action or relaxed play. Quizzes + Tests. Racing, 3D, topview, sideview, rotating vehicle or not. Realtime Strategy. RPGs, action, MORPG, Rogue, turn-based, relaxed play, tactical, 3D, Topview, Sideview, saves game or not. Runners. (usually sideview, player is constantly running). Sandbox, Open World, Creative. Shooters, 3D, topview, sideview, rotating player, uses mouse or not, constant walking or not. Simulation, Construction + Management. Social deduction, Clue. Solitaire, Klondike. Space Strategy + Selling + Trading. Sports + Air Hockey. Football, Baseball, Soccer, Basketball, Hockey. Strategy, 4x, artillery, auto, RTS, RTT, TBS, TBT. Survival Horror, 3D, topview, or sideview. Survival Island, limited resources. Text Adventures. Time Management + Simulators. Tower defense, topview or sideview. Trial & Error + Exploration. Tribute (give tribute to known game). Visual Novel. War Games (Global Thermonuclear War). Zen + Greeting Cards + Tests + Fakes. Zelda-Like. |
